﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using LibQuestionIs.Managers;
using LibQuestionIs.Models;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;

namespace Infos.InterviewApp.View
{
    /// <summary>
    /// A basic page that provides characteristics common to most applications.
    /// </summary>
    public sealed partial class ListaRisultati : Infos.InterviewApp.Common.LayoutAwarePage
    {
        public ObservableCollection<EsitoPunteggio> listaPunteggi = new ObservableCollection<EsitoPunteggio>();

        public ObservableCollection<string> listTipologia = new ObservableCollection<string>();

        public ObservableCollection<EsitoPunteggioTipologia> listAllPunteggi = new ObservableCollection<EsitoPunteggioTipologia>();

        public ListaRisultati()
        {
            this.InitializeComponent();
        }

        protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {
            PopupBacheca = new Popup()
            {
                Margin = new Thickness(100, 100, 100, 100),
                VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Stretch,
                HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Stretch,
            };
            listTipologia = new ObservableCollection<string>();
            this.DefaultViewModel["listDifficolta"] = DataFlowObject.ListDifficoltaRicerca;
            await Task.FromResult(true);
        }

        protected override void SaveState(Dictionary<String, Object> pageState)
        {

        }

        private void BtnBacheca_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            if (PopupBacheca.IsOpen)
                return;
            PopupBacheca.Child = new Bacheca(this);
            PopupBacheca.IsOpen = true;
        }

        private void mail_Click(object sender, RoutedEventArgs e)
        {
            if (PopupBacheca.IsOpen)
                return;
            PopupBacheca.Child = new InvioSuggerimento(this);
            PopupBacheca.IsOpen = true;
        }

        private void cmbTipologia_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var element = (ComboBox)sender;
            var listPunteggiForTipologia = listAllPunteggi.Where(x => x.Tipologia == element.SelectedValue.ToString())
                                           .Select(x => x.EsitoPunteggi).ToList();
            this.DefaultViewModel["ListaPunteggi"] = listPunteggiForTipologia[0];

        }

        private async void cmbDifficolta_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selezione = (cmbDifficolta.SelectedItem as Difficolta);

            listAllPunteggi = await new ManagerRisultati().GetAllListPunteggiByDifficolta((short)selezione.IDDifficolta);
            if (listTipologia.Count == 0)
            {
                foreach (var item in listAllPunteggi)
                    listTipologia.Add(item.Tipologia);
                this.DefaultViewModel["listTipologia"] = listTipologia;
            }
            var listPunteggiForTipologia = listAllPunteggi.Where(x => x.Tipologia == cmbTipologia.SelectedValue.ToString())
                                  .Select(x => x.EsitoPunteggi).ToList();
            this.DefaultViewModel["ListaPunteggi"] = listPunteggiForTipologia[0];
        }
    }
}